package betandregret.tests;

import java.util.Calendar;

import org.junit.After;
import org.junit.Before;
import static org.junit.Assert.assertNotNull;

import betandregret.interfaces.IBetAndRegret;
import betandregret.interfaces.IKundenBoundary;
import betandregret.interfaces.IMitarbeiterBoundary;

/**
 * Diese abstrakte Klasse stellt @Before und @After Methoden fuer die JUnit
 * Testklassen zur Verfuegung, die vor einer Testmethode das System in einen
 * betriebsbereiten Zustand versetzen und nach dem Test das System beenden.
 * 
 * Diese Klasse darf nicht geaendert werden, bis auf die Instanziierung
 * Ihres Systems an der markierten Stelle.
 * 
 * @author daniel
 * 
 */
public abstract class AbstractBetAndRegretTest {

	protected IBetAndRegret betAndRegretSystem;
	protected IKundenBoundary kundenBoundary;
	protected IMitarbeiterBoundary mitarbeiterBoundary;

	/**
	 * Instanziieren Sie in der prepareTest() Methode ihr Bet & Regret System an
	 * der Stelle des Nullpointers
	 */
	@Before
	public void prepareTest() {

		betAndRegretSystem = null; // Hier Ihr Bet & Regret System
									// instanziieren
		Calendar datum = Calendar.getInstance();
		datum.set(2012, 1, 5, 18, 0);
		betAndRegretSystem.setDatum(datum);

		assertNotNull("Bet & Regret System laden", betAndRegretSystem);

		betAndRegretSystem.initialisieren();

		kundenBoundary = betAndRegretSystem.getKundenBoundary();
		mitarbeiterBoundary = betAndRegretSystem.getMitarbeiterBoundary();

		assertNotNull("KundenBoundary geladen", kundenBoundary);
		assertNotNull("MitarbeiterBoundary geladen", mitarbeiterBoundary);
	}

	@After
	public void shutdownSystem() {

		betAndRegretSystem.shutDown();

		kundenBoundary = null;
		mitarbeiterBoundary = null;
		betAndRegretSystem = null;
	}

}